package ae.pcfc.cldos.online.common.clddb.dao;

import java.util.List;

import ae.pcfc.cldos.online.common.clddb.domain.AppMetaData;
import ae.pcfc.cldos.online.common.vo.UserInformationVO;
import ae.pcfc.cldos.online.common.vo.tasks.TaskRequestDbRestrictions;

/**
 * 
 * @author arosa
 *
 */
public interface AppMetaDataDAO{
	
	public void add(AppMetaData appMetaData);
	
	public void update(AppMetaData appMetaData);
	
	public AppMetaData getAppMetaDataById(Long appId, String serviceCode);
	
	public AppMetaData getPlainAppMetaDataById(Long appId);
	
	public List<AppMetaData> getAllAppRequests(UserInformationVO userInformationVO, TaskRequestDbRestrictions taskRequestDbRestrictions);
	
	public Integer getApplicationCount(UserInformationVO userInformationVO, TaskRequestDbRestrictions taskRequestDbRestrictions);
	
	public List<AppMetaData> getAllApplications(UserInformationVO userInformationVO, TaskRequestDbRestrictions taskRequestDbRestrictions);
	
	public List<AppMetaData> getAppMetaDataByPassportDetails(String passportName, String passportNo);
	
	public Integer getEmploymentVisaPendingRequests(Long clientId);
	
	public Integer getRequestAmountByPersonId(String empId);
	
	public AppMetaData getApplicationByReferenceNumber(String clientRefNo);
	
	public Integer getVisitVisaPendingRequests(Long clientId);
	
	public Integer getPendingRequests(Long clientId);
	
	public AppMetaData findAppMetaDataById(Long appId);
}
